﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SoftwareConsulting.BI11.Studio.InternalServices.Properties;

namespace SoftwareConsulting.BI11.Studio.InternalServices
{
    /// <summary>
    /// Класс констант
    /// </summary>
    public static class Constants
    {        
        public const double NullDouble = double.MaxValue;
        public const int NullInteger = int.MaxValue;
        private static DateTime _NullDate = new DateTime(1888, 02, 11);        
        /// <summary>
        /// Здесь еще надо обязательно точку, т.к. она тоже
        /// используется для распарсивания в контейнере правил,
        /// а имя показателя (например даты в календарном измерении)
        /// запросто может быть с точкой.
        /// Но не стал пока добавлять иначе не знаю как задавать
        /// те же даты.
        /// Думаю, после переделок с измерениями/показателями
        /// необходимость ограничивать использование точки отпадет,
        /// т.к. в контейнере правил скорее всего будут использоваться
        /// лэйблы показателей, а не их имена
        /// </summary>
        public const string WrongNameSymbols = "[]"; //они используются в контейнерах правил для распарсивания

        public static DateTime NullDate
        {
            get
            {
                return _NullDate;
            }
        }

        public static string NullDoesNotMatterString
        {
            get
            {
                return Resources.BI_NULL_TEXT;
            }
        }

        public static string NullNotDefinedString
        {
            get
            {
                return Resources.BI_NULL_TEXT_LIMSTARTDIALOG;
            }
        }
    }        

    /// <summary>
    /// Направления в одномерном пространстве
    /// </summary>
    [Flags]
    public enum Directions1D
    {
        None = 0,
        Back = 1,
        Forward = 2
    }

    /// <summary>
    /// Направления в двумерном пространстве
    /// </summary>
    [Flags]
    public enum Directions2D
    {
        None = 0,
        Left = Directions1D.Back,
        Right = Directions1D.Forward,
        Up = Right * 2,
        Down = Up * 2,
        UpLeft = Up | Left,
        UpRight = Up | Right,
        DownRight = Down | Right,
        DownLeft = Down | Left,    
        All = Left | Right | Up | Down | UpLeft | UpRight | DownRight | DownLeft
    };

    /// <summary>
    /// Углы
    /// </summary>
    [Flags]
    public enum Corners
    {
        None = 0,
        TopLeft = Directions2D.UpLeft,
        TopRight = Directions2D.UpRight,
        BottomRight = Directions2D.DownRight,
        BottomLeft = Directions2D.DownLeft,
        All = TopLeft | TopRight | BottomLeft | BottomRight,        
    };
}
